package siberia.lexer;

public enum TokenType {
    EndOfFile,

    Identifier,

    LParen, // (
    RParen, // )
    LBracket, // [
    RBracket, // ]
    LBrace, // {
    RBrace, // }

    Comma, // ,
    Semicolon, // ;

    Assign, // =
    Minus, // -
    Add, // +
    Mul, // *
    Div, // /
    RoundDiv, // //
    Mod, // %
    LessThan, // <
    LessEqual, // <=
    GreaterThan, // >
    GreaterEqual, // >=
    Equal, // ==
    NotEqual, // !=

    And, // &&
    Or, // ||
    Not, // !

    BAnd, // &
    BOr, // |
    BNot, // ~
    BXor, // ^
    LMove, // <<
    RMove, // >>

    // keywords
    True,
    False,
    Func,
    If,
    Elif,
    Else,
    For,
    While,
    Return,

    // type
    Int,
    Bool,
    Str,
    Float,

    // literals
    IntLiteral,
    StringLiteral,
    FloatLiteral
}
